package com.sys.goods.service;

import java.util.Map;

import com.sys.common.pojo.ApiResponse;
import com.sys.common.util.PageInfoUtil;
import com.sys.goods.pojo.ACate;
import com.sys.goods.pojo.AComment;
import com.sys.goods.pojo.AGoods;

/**
 * Service接口(商品代码) 此接口中只存储数据库表的CRUD
 * 
 * @author 朱明宇
 */
public interface IGoodsDbService
{
	/*----- 分类模块管理开始 -----*/
	/**
	 * 添加一条分类
	 * 
	 * @param demoCate 分类的对象
	 * @return 封装的ApiResponse;详情参见:{@link ApiResponse}},泛型是Object
	 */
	ApiResponse<Object> saveOneCateService(ACate cate);

	/**
	 * 更新一条分类
	 * 
	 * @param demoCate 分类的对象
	 * @return 封装的ApiResponse;详情参见:{@link ApiResponse}},泛型是Object
	 */
	ApiResponse<Object> updateOneCateService(ACate cate);

	/**
	 * 删除一条分类
	 * 
	 * @param condMap 删除的条件
	 * @return 封装的ApiResponse;详情参见:{@link ApiResponse}},泛型是Object
	 */
	ApiResponse<Object> deleteOneCateService(Map<String, Object> condMap);

	/**
	 * 查询多条分类
	 * 
	 * @param pageInfoUtil 封装的分页对象;{{@link PageInfoUtil}
	 * @param condMap      搜索的条件
	 * @return 封装的ApiResponse;详情参见:{@link ApiResponse}},泛型是ACate
	 */
	ApiResponse<ACate> findCondListCateService(PageInfoUtil pageInfoUtil, Map<String, Object> condMap);

	/**
	 * 查询一条分类
	 * 
	 * @param condMap 搜索的条件
	 * @return 封装的ApiResponse;详情参见:{@link ApiResponse}},泛型是ACate
	 */
	ApiResponse<ACate> findOneCateService(Map<String, Object> condMap);
	/*----- 分类模块管理结束 -----*/
	
	/*----- 商品模块管理开始 -----*/
	/**
	 * 添加一条商品
	 * 
	 * @param demoGoods 商品的对象
	 * @return 封装的ApiResponse;详情参见:{@link ApiResponse}},泛型是Object
	 */
	ApiResponse<Object> saveOneGoodsService(AGoods goods);

	/**
	 * 更新一条商品
	 * 
	 * @param demoGoods 商品的对象
	 * @return 封装的ApiResponse;详情参见:{@link ApiResponse}},泛型是Object
	 */
	ApiResponse<Object> updateOneGoodsService(AGoods goods);
	
	/**
	 * 更新一条商品,(带上传照片)
	 * @param goods
	 * @param paramsMap
	 * @return
	 */
	ApiResponse<Object> updateOneGoodsService(AGoods goods, Map<String, Object> paramsMap);

	/**
	 * 删除一条商品
	 * 
	 * @param condMap 删除的条件
	 * @return 封装的ApiResponse;详情参见:{@link ApiResponse}},泛型是Object
	 */
	ApiResponse<Object> deleteOneGoodsService(Map<String, Object> condMap);

	/**
	 * 查询多条商品
	 * 
	 * @param pageInfoUtil 封装的分页对象;{{@link PageInfoUtil}
	 * @param condMap      搜索的条件
	 * @return 封装的ApiResponse;详情参见:{@link ApiResponse}},泛型是AGoods
	 */
	ApiResponse<AGoods> findCondListGoodsService(PageInfoUtil pageInfoUtil, Map<String, Object> condMap);

	/**
	 * 查询一条商品
	 * 
	 * @param condMap 搜索的条件
	 * @return 封装的ApiResponse;详情参见:{@link ApiResponse}},泛型是AGoods
	 */
	ApiResponse<AGoods> findOneGoodsService(Map<String, Object> condMap);
	/*----- 商品模块管理结束 -----*/
	
	/*----- 评论模块管理开始 -----*/
	/**
	 * 添加一条评论
	 * 
	 * @param demoComment 评论的对象
	 * @return 封装的ApiResponse;详情参见:{@link ApiResponse}},泛型是Object
	 */
	ApiResponse<Object> saveOneCommentService(AComment comment);

	/**
	 * 更新一条评论
	 * 
	 * @param demoComment 评论的对象
	 * @return 封装的ApiResponse;详情参见:{@link ApiResponse}},泛型是Object
	 */
	ApiResponse<Object> updateOneCommentService(AComment comment);

	/**
	 * 删除一条评论
	 * 
	 * @param condMap 删除的条件
	 * @return 封装的ApiResponse;详情参见:{@link ApiResponse}},泛型是Object
	 */
	ApiResponse<Object> deleteOneCommentService(Map<String, Object> condMap);

	/**
	 * 查询多条评论
	 * 
	 * @param pageInfoUtil 封装的分页对象;{{@link PageInfoUtil}
	 * @param condMap      搜索的条件
	 * @return 封装的ApiResponse;详情参见:{@link ApiResponse}},泛型是AComment
	 */
	ApiResponse<AComment> findCondListCommentService(PageInfoUtil pageInfoUtil, Map<String, Object> condMap);

	/**
	 * 查询一条评论
	 * 
	 * @param condMap 搜索的条件
	 * @return 封装的ApiResponse;详情参见:{@link ApiResponse}},泛型是AComment
	 */
	ApiResponse<AComment> findOneCommentService(Map<String, Object> condMap);
	/*----- 评论模块管理结束 -----*/
}
